<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--

 CDDL HEADER START

 The contents of this file are subject to the terms of the
 Common Development and Distribution License (the "License").
 You may not use this file except in compliance with the License.

 You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 or http://www.opensolaris.org/os/licensing.
 See the License for the specific language governing permissions
 and limitations under the License.

 When distributing Covered Code, include this CDDL HEADER in each
 file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 If applicable, add the following below this CDDL HEADER, with the
 fields enclosed by brackets "[]" replaced with your own identifying
 information: Portions Copyright [yyyy] [name of copyright owner]

 CDDL HEADER END

	Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
	Copyright (c) 2012 by Delphix. All rights reserved.
	Copyright 2014 Nexenta Systems, Inc.  All rights reserved
	Copyright 2016 Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
	Copyright (c) 2012, 2014 by Delphix. All rights reserved.
	Copyright 2022 RackTop Systems.

	NOTE:  This service manifest is not editable; its contents will
	be overwritten by package or patch operations, including
	operating system upgrade.  Make customizations in a different
	file.

	Note: if this service is modified to consist of anything other
	than a single instance named 'default', you must make changes to
	$SRC/head/rpcsvc/daemon_utils.h and libnsl:open_daemon_lock().
-->

<service_bundle type='manifest' name='SUNWnfssr:nfs-server'>

<service
	name='network/nfs/server'
	type='service'
	version='2'>

	<dependency name='network'
	    grouping='require_any'
	    restart_on='error'
	    type='service'>
		<service_fmri value='svc:/milestone/network' />
	</dependency>

	<dependency name='nlockmgr'
	    grouping='require_all'
	    restart_on='error'
	    type='service'>
		<service_fmri value='svc:/network/nfs/nlockmgr' />
	</dependency>

	<dependency name='mapid'
	    grouping='optional_all'
	    restart_on='error'
	    type='service'>
		<service_fmri value='svc:/network/nfs/mapid' />
	</dependency>

	<dependency name='rpcbind'
	    grouping='require_all'
	    restart_on='restart'
	    type='service'>
		<service_fmri value='svc:/network/rpc/bind' />
	</dependency>

	<dependency name='keyserv'
	    grouping='optional_all'
	    restart_on='none'
	    type='service'>
		<service_fmri value='svc:/network/rpc/keyserv' />
	</dependency>

	<dependency name='gss'
	    grouping='optional_all'
	    restart_on='none'
	    type='service'>
		<service_fmri value='svc:/network/rpc/gss' />
	</dependency>

	<dependency name='share-group'
	    grouping='optional_all'
	    restart_on='none'
	    type='service'>
		<service_fmri value='svc:/network/shares/group' />
	</dependency>

	<dependency name='reparse'
	    grouping='optional_all'
	    restart_on='none'
	    type='service'>
		<service_fmri value='svc:/system/filesystem/reparse' />
	</dependency>

	<!-- Must have all local filesystems mounted before we share them -->
	<dependency name='filesystem-local'
	    grouping='require_all'
	    restart_on='error'
	    type='service'>
		<service_fmri value='svc:/system/filesystem/local' />
	</dependency>

	<dependent
		name='nfs-server_multi-user-server'
		grouping='optional_all'
		restart_on='none'>
		<service_fmri value='svc:/milestone/multi-user-server' />
	</dependent>

	<!--
	  The shareall done as part of the nfs-server method may take a
	  long time, as the contents of dfstab can be arbitrarily large.
	  Set the timeout appropriately for both 'start' and 'refresh'.
	-->
	<exec_method
	    type='method'
	    name='start'
	    exec='/lib/svc/method/nfs-server %m'
	    timeout_seconds='3600' />

	<exec_method
	    type='method'
	    name='refresh'
	    exec='/lib/svc/method/nfs-server %m'
	    timeout_seconds='3600' />

	<!--
	  The stop method runs unshareall as well as up to a 10 second
	  sleep to do graceful versus forceful shutdown of daemons.  Set
	  the timeout appropriately.
	-->
	<exec_method
	    type='method'
	    name='stop'
	    exec='/lib/svc/method/nfs-server %m %{restarter/contract}'
	    timeout_seconds='3600' />

	<property_group name='application' type='framework'>
		<stability value='Evolving' />
		<propval name='auto_enable' type='boolean' value='true' />
	</property_group>

	<property_group name='firewall_context' type='com.sun,fw_definition'>
		<propval name='name' type='astring' value='nfsd' />
		<propval name='ipf_method' type='astring'
		    value='/lib/svc/method/nfs-server ipfilter' />
	</property_group>

	<property_group name='firewall_config' type='com.sun,fw_configuration'>
		<propval name='policy' type='astring' value='use_global' />
		<propval name='block_policy' type='astring'
			value='use_global' />
		<propval name='apply_to' type='astring' value='' />
		<propval name='apply_to_6' type='astring' value='' />
		<propval name='exceptions' type='astring' value='' />
		<propval name='exceptions_6' type='astring' value='' />
		<propval name='target' type='astring' value='' />
		<propval name='target_6' type='astring' value='' />
		<propval name='value_authorization' type='astring'
			value='solaris.smf.value.firewall.config' />
	</property_group>
	<instance name='default' enabled='false'>
	 <property_group name='nfs-props' type='com.oracle.nfs,props'>
	   <propval name='device' type='astring' value=''/>
	   <propval name='listen_backlog' type='integer' value='32'/>
	   <propval name='max_connections' type='integer' value='-1'/>
	   <propval name='protocol' type='astring' value='ALL'/>
	   <propval name='server_delegation' type='astring' value='on'/>
	   <propval name='server_versmax' type='integer' value='4'/>
	   <propval name='server_versmin' type='integer' value='2'/>
	   <propval name='servers' type='integer' value='256'/>
	   <propval name='mountd_listen_backlog' type='integer' value='64'/>
	   <propval name='mountd_max_threads' type='integer' value='16'/>
	   <propval name='mountd_port' type='integer' value='0'/>
	   <propval name='mountd_remote_dump' type='boolean' value='false'/>
	 </property_group>
	</instance>

	<stability value='Stable' />

	<template>
		<common_name>
			<loctext xml:lang='C'>
				NFS server
			</loctext>
		</common_name>
		<documentation>
			<manpage title='nfsd' section='8'
				manpath='/usr/share/man' />
		</documentation>
	</template>
</service>

</service_bundle>
